package com.ctshk.rpc.order.bus.dto;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel("巴士订单详情dto")
public class BusOrderDTO implements Serializable {
	private static final long serialVersionUID = 1L;
	
	@ApiModelProperty(value = "ID")
    private Long id;
    
    @ApiModelProperty(value = "创建时间")
	private LocalDateTime gmtCreate;
    
    @ApiModelProperty(value = "修改时间")
	private LocalDateTime gmtModified;

	@ApiModelProperty(value = "第三方票号")
    private String thirdTicketNo;

    @ApiModelProperty(value = "销售单号")
    private String orderNumber;

    @ApiModelProperty(value = "巴士产品id")
    private Long busId;

    @ApiModelProperty(value = "出发日期")
    private LocalDate effectiveTime;

    @ApiModelProperty(value = "购买数量")
    private Integer number;

    @ApiModelProperty(value = "是否代理")
    private Integer isAgent;

    @ApiModelProperty(value = "代理公司id")
    private Long agencyId;

    @ApiModelProperty(value = "代理公司")
    private String agencyCompany;

    @ApiModelProperty(value = "代理人名称")
    private String agentUserName;

    @ApiModelProperty(value = "订单金额")
    private BigDecimal orderAmount;

    @ApiModelProperty(value = "付款状态")
    private Integer paymentStatus;

    @ApiModelProperty(value = "预订状态")
    private Integer scheduledStatus;

    @ApiModelProperty(value = "取消状态")
    private Integer cancelStatus;

    @ApiModelProperty(value = "产品类型")
    private Integer productType;

    @ApiModelProperty(value = "来源")
    private Integer source;

    @ApiModelProperty(value = "销售人员id")
    private Long salesmanId;

    @ApiModelProperty(value = "销售人员名称")
    private String salesmanName;

    @ApiModelProperty(value = "联系人姓")
    private String surname;

    @ApiModelProperty(value = "联系人名")
    private String name;

    @ApiModelProperty(value = "联系人姓名")
    private String contactName;

    @ApiModelProperty(value = "联系人手机")
    private String contactMobile;

    @ApiModelProperty(value = "联系人手机区号id")
    private Long contactMobileAreaCodeId;

    @ApiModelProperty(value = "联系人手机区号")
    private String contactMobileAreaCode;

    @ApiModelProperty(value = "联系人邮箱")
    private String contactEmail;

    @ApiModelProperty(value = "付款到期时间")
    private LocalDateTime payExpireDate;

    @ApiModelProperty(value = "会员id")
    private String memberId;

    @ApiModelProperty(value = "会员查询类型(1:手机号查询,2:证件号码查询)")
    private Integer memberQueryType;

    @ApiModelProperty(value = "会员查询证件类型(根据CRM提供的证件类型列表)")
    private Integer memberQueryCertificatesType;

    @ApiModelProperty(value = "会员查询编码(根据memberQueryType判断)")
    private String memberQueryCode;

    @ApiModelProperty(value = "会员类型,枚举MemberType")
    private String memberType;

    @ApiModelProperty(value = "使用积分")
    private Integer usingPoints;

    @ApiModelProperty(value = "优惠卷id")
    private Long couponId;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "创建人")
    private Long createId;

    @ApiModelProperty(value = "修改人")
    private Long modifiedId;

    @ApiModelProperty(value = "删除标识")
    private Integer isDeleted;

    @ApiModelProperty(value = "性别")
    private Integer gender;

    @ApiModelProperty(value = "应收金额")
    private BigDecimal receivableAmount;

    @ApiModelProperty(value = "已退款金额")
    private BigDecimal refundedAmount;

    @ApiModelProperty(value = "销售方式(1：单品销售 2：打包销售)")
    private Integer salesMethods;

    @ApiModelProperty(value = "出发城市id")
    private Long departureCityId;

    @ApiModelProperty(value = "出发城市名称")
    private String departureCityName;

    @ApiModelProperty(value = "到达城市id")
    private Long arriveCityId;

    @ApiModelProperty(value = "到达城市名称")
    private String arriveCityName;

    @ApiModelProperty(value = "线路id")
    private Long lineId;

    @ApiModelProperty(value = "班次码")
    private String shiftCode;

    @ApiModelProperty(value = "出发时间")
    private LocalTime departureTime;

    @ApiModelProperty(value = "上车站id")
    private Long boardingStationId;

    @ApiModelProperty(value = "上车站名称")
    private String boardingStationName;

    @ApiModelProperty(value = "下车站点id")
    private Long alightingStationId;

    @ApiModelProperty(value = "下车站点名称")
    private String alightingStationName;

    @ApiModelProperty(value = "巴士公司id")
    private Long busCompaniesId;

    @ApiModelProperty(value = "巴士公司名称")
    private String busCompaniesName;

    @ApiModelProperty(value = "票种类型名称")
    private String ticketTypeName;

    @ApiModelProperty(value = "线路名称")
    private String lineName;
    
    @ApiModelProperty(value = "客户类型；1：散客；2：代理；3；大客户；")
    private Integer clientType;
    
    @ApiModelProperty(value = "大客户ID")
    private Long bigClientId;

    @ApiModelProperty(value = "大客户名称")
    private String bigClientName;
    
    @ApiModelProperty(value = "优惠卷号码")
    private String couponNumber;
    
    @ApiModelProperty(value = "实收金额")
    private BigDecimal officialAmount;

    @ApiModelProperty(value="C端用户Id")
    private Long userId;
}
